1 /*
2 * File: xil_interface.c
3 *
4 * SIL generated interface for code: "Autopilot"
5 *
6 */
7
8 #include "xil_interface.h"
9 #include "Autopilot.h"
10 /* Functions with a C call interface */
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 #include "xil_data_stream.h"
15 #ifdef __cplusplus
16 }
17 #endif
18
19 /* interface data */
20 slBus1 AirData;
21
22 /* interface data */
23 slBus2 Inertial;
24
25 /* interface data */
26 boolean_T APEng;
27
28 /* interface data */
29 boolean_T HDGMode;
30
31 /* interface data */
32 boolean_T ALTMode;
33
34 /* interface data */
35 real_T HDGRef;
36
37 /* interface data */
38 real_T TurnKnob;
39
40 /* interface data */
41 real_T ALTRef;
42
43 /* interface data */
44 real_T PitchWheel;
45
46 /* interface data */
47 real_T AileronCmd;
48
49 /* interface data */
50 real_T ElevatorCmd;
51
52 /* interface data */
53 real_T RudderCmd;
54
55 /* interface data */
56 rtDW_Autopilot localDW;
57
58 static XILIOData xil_fcnid0_task1_u[19];
59
60 static XILIOData xil_fcnid0_task1_y[4];
61
62 static XILIOData xil_fcnid0_init_y[4];
63
64
65 /* In-the-Loop Interface functions - see xil_interface.h */
66
67 XIL_INTERFACE_ERROR_CODE xilProcessParams(uint32_T xilFcnId) {
68 /* Single In-the-Loop Component */
69 if (xilFcnId != 0) {
70 return XIL_INTERFACE_UNKNOWN_FCNID;
71 }
72 return XIL_INTERFACE_SUCCESS;
73 }
74
75 XIL_INTERFACE_ERROR_CODE xilGetDataTypeInfo(void) {
76 {
77 /* send response id code */
78 MemUnit_T memUnitData = XIL_RESPONSE_TYPE_SIZE;
79 if (xilWriteData(&memUnitData, sizeof(memUnitData)) != XIL_DATA_STREAM_SUCCESS) {
80 return XIL_INTERFACE_COMMS_FAILURE;
81 }
82 /* send type id */
83 memUnitData = 0;
84 if (xilWriteData(&memUnitData, sizeof(memUnitData)) != XIL_DATA_STREAM_SUCCESS) {
85 return XIL_INTERFACE_COMMS_FAILURE;
86 }
87 /* PIL_DOUBLE_SIZE should only be already defined for MathWorks testing */
88 #ifndef PIL_DOUBLE_SIZE
89 #define PIL_DOUBLE_SIZE sizeof(double)
90 #endif
91 /* send size in bytes */
92 memUnitData = (MemUnit_T) PIL_DOUBLE_SIZE;
93 #ifndef HOST_WORD_ADDRESSABLE_TESTING
94 /* convert MemUnits to bytes */
95 memUnitData *= MEM_UNIT_BYTES;
96 #endif
97 if (xilWriteData(&memUnitData, sizeof(memUnitData)) != XIL_DATA_STREAM_SUCCESS) {
98 return XIL_INTERFACE_COMMS_FAILURE;
99 }
100 }
101 return XIL_INTERFACE_SUCCESS;
102 }
103
104 XIL_INTERFACE_ERROR_CODE xilInitialize(uint32_T xilFcnId) {
105 XIL_INTERFACE_ERROR_CODE errorCode = XIL_INTERFACE_SUCCESS;
106 /* initialize output storage owned by In-the-Loop */
107 {
108 AileronCmd = 0;
109 }
110 {
111 ElevatorCmd = 0;
112 }
113 {
114 RudderCmd = 0;
115 }
116 /* Single In-the-Loop Component */
117 if (xilFcnId == 0) {
118 Autopilot_initialize(&(localDW));
119 Autopilot_Start(&(localDW));
120 }
121 else {
122 errorCode = XIL_INTERFACE_UNKNOWN_FCNID;
123 }
124 return errorCode;
125 }
126
127 XIL_INTERFACE_ERROR_CODE xilInitializeConditions(uint32_T xilFcnId) {
128 XIL_INTERFACE_ERROR_CODE errorCode = XIL_INTERFACE_SUCCESS;
129 /* Single In-the-Loop Component */
130 if (xilFcnId == 0) {
131 /* No Initialize Conditions Function to Call */
132 }
133 else {
134 errorCode = XIL_INTERFACE_UNKNOWN_FCNID;
135 }
136 return errorCode;
137 }
138
139 XIL_INTERFACE_ERROR_CODE xilGetUIOData(uint32_T xilFcnId, XIL_COMMAND_TYPE_ENUM xilCommandType, uint32_T xilCommandIdx, XILIOData ** xilIOData) {
140 XIL_INTERFACE_ERROR_CODE errorCode = XIL_INTERFACE_SUCCESS;
141 *xilIOData = 0;
142 /* Single In-the-Loop Component */
143 if (xilFcnId != 0) {
144 errorCode = XIL_INTERFACE_UNKNOWN_FCNID;
145 return errorCode;
146 }
147 switch(xilCommandType) {
148 case XIL_STEP_COMMAND: {
149 static int initComplete = 0;
150 if (!initComplete) {
151 uint32_T tableIdx = 0;
152 {
153 void * dataAddress = (void *) &(AirData.altRate);
154 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
155 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
156 }
157 {
158 void * dataAddress = (void *) &(AirData.alpha);
159 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
160 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
161 }
162 {
163 void * dataAddress = (void *) &(AirData.beta);
164 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
165 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
166 }
167 {
168 void * dataAddress = (void *) &(AirData.airspeed);
169 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
170 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
171 }
172 {
173 void * dataAddress = (void *) &(AirData.alt);
174 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
175 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
176 }
177 {
178 void * dataAddress = (void *) &(Inertial.phi);
179 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
180 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
181 }
182 {
183 void * dataAddress = (void *) &(Inertial.theta);
184 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
185 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
186 }
187 {
188 void * dataAddress = (void *) &(Inertial.psi);
189 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
190 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
191 }
192 {
193 void * dataAddress = (void *) &(Inertial.p);
194 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
195 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
196 }
197 {
198 void * dataAddress = (void *) &(Inertial.q);
199 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
200 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
201 }
202 {
203 void * dataAddress = (void *) &(Inertial.r);
204 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
205 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
206 }
207 {
208 void * dataAddress = (void *) &(APEng);
209 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(boolean_T);
210 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
211 }
212 {
213 void * dataAddress = (void *) &(HDGMode);
214 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(boolean_T);
215 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
216 }
217 {
218 void * dataAddress = (void *) &(ALTMode);
219 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(boolean_T);
220 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
221 }
222 {
223 void * dataAddress = (void *) &(HDGRef);
224 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
225 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
226 }
227 {
228 void * dataAddress = (void *) &(TurnKnob);
229 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
230 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
231 }
232 {
233 void * dataAddress = (void *) &(ALTRef);
234 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
235 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
236 }
237 {
238 void * dataAddress = (void *) &(PitchWheel);
239 xil_fcnid0_task1_u[tableIdx].memUnitLength = 1 * sizeof(real_T);
240 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) dataAddress;
241 }
242 xil_fcnid0_task1_u[tableIdx].memUnitLength = 0;
243 xil_fcnid0_task1_u[tableIdx++].address = (MemUnit_T *) 0;
244 initComplete = 1;
245 }
246 *xilIOData = &xil_fcnid0_task1_u[0];
247 break;
248 }
249 default:
250 errorCode = XIL_INTERFACE_UNKNOWN_TID;
251 break;
252 }
253 UNUSED_PARAMETER(xilCommandIdx);
254 return errorCode;
255 }
256
257 XIL_INTERFACE_ERROR_CODE xilOutput(uint32_T xilFcnId, uint32_T xilTID) {
258 /* Single In-the-Loop Component */
259 if (xilFcnId != 0) {
260 return XIL_INTERFACE_UNKNOWN_FCNID;
261 }
262 switch(xilTID) {
263 case 1:
264 Autopilot(&(AirData), &(Inertial), &(APEng), &(HDGMode), &(ALTMode), &(HDGRef), &(TurnKnob), &(ALTRef), &(PitchWheel), &(AileronCmd), &(ElevatorCmd), &(RudderCmd), &(localDW));
265 break;
266 default:
267 return XIL_INTERFACE_UNKNOWN_TID;
268 }
269 return XIL_INTERFACE_SUCCESS;
270 }
271
272 XIL_INTERFACE_ERROR_CODE xilUpdate(uint32_T xilFcnId, uint32_T xilTID) {
273 /* Single In-the-Loop Component */
274 if (xilFcnId != 0) {
275 return XIL_INTERFACE_UNKNOWN_FCNID;
276 }
277 /* No Update Function */
278 UNUSED_PARAMETER(xilTID);
279 return XIL_INTERFACE_SUCCESS;
280 }
281
282 XIL_INTERFACE_ERROR_CODE xilGetYIOData(uint32_T xilFcnId, XIL_COMMAND_TYPE_ENUM xilCommandType, uint32_T xilCommandIdx, XILIOData ** xilIOData) {
283 XIL_INTERFACE_ERROR_CODE errorCode = XIL_INTERFACE_SUCCESS;
284 /* Single In-the-Loop Component */
285 *xilIOData = 0;
286 if (xilFcnId != 0) {
287 errorCode = XIL_INTERFACE_UNKNOWN_FCNID;
288 return errorCode;
289 }
290 switch(xilCommandType) {
291 case XIL_INITIALIZE_COMMAND: {
292 static int initComplete = 0;
293 if (!initComplete) {
294 uint32_T tableIdx = 0;
295 {
296 void * dataAddress = (void *) &(AileronCmd);
297 xil_fcnid0_init_y[tableIdx].memUnitLength = 1 * sizeof(real_T);
298 xil_fcnid0_init_y[tableIdx++].address = (MemUnit_T *) dataAddress;
299 }
300 {
301 void * dataAddress = (void *) &(ElevatorCmd);
302 xil_fcnid0_init_y[tableIdx].memUnitLength = 1 * sizeof(real_T);
303 xil_fcnid0_init_y[tableIdx++].address = (MemUnit_T *) dataAddress;
304 }
305 {
306 void * dataAddress = (void *) &(RudderCmd);
307 xil_fcnid0_init_y[tableIdx].memUnitLength = 1 * sizeof(real_T);
308 xil_fcnid0_init_y[tableIdx++].address = (MemUnit_T *) dataAddress;
309 }
310 xil_fcnid0_init_y[tableIdx].memUnitLength = 0;
311 xil_fcnid0_init_y[tableIdx++].address = (MemUnit_T *) 0;
312 initComplete = 1;
313 }
314 *xilIOData = &xil_fcnid0_init_y[0];
315 break;
316 }
317 case XIL_STEP_COMMAND: {
318 static int initComplete = 0;
319 if (!initComplete) {
320 uint32_T tableIdx = 0;
321 {
322 void * dataAddress = (void *) &(AileronCmd);
323 xil_fcnid0_task1_y[tableIdx].memUnitLength = 1 * sizeof(real_T);
324 xil_fcnid0_task1_y[tableIdx++].address = (MemUnit_T *) dataAddress;
325 }
326 {
327 void * dataAddress = (void *) &(ElevatorCmd);
328 xil_fcnid0_task1_y[tableIdx].memUnitLength = 1 * sizeof(real_T);
329 xil_fcnid0_task1_y[tableIdx++].address = (MemUnit_T *) dataAddress;
330 }
331 {
332 void * dataAddress = (void *) &(RudderCmd);
333 xil_fcnid0_task1_y[tableIdx].memUnitLength = 1 * sizeof(real_T);
334 xil_fcnid0_task1_y[tableIdx++].address = (MemUnit_T *) dataAddress;
335 }
336 xil_fcnid0_task1_y[tableIdx].memUnitLength = 0;
337 xil_fcnid0_task1_y[tableIdx++].address = (MemUnit_T *) 0;
338 initComplete = 1;
339 }
340 *xilIOData = &xil_fcnid0_task1_y[0];
341 break;
342 }
343 default:
344 errorCode = XIL_INTERFACE_UNKNOWN_TID;
345 break;
346 }
347 UNUSED_PARAMETER(xilCommandIdx);
348 return errorCode;
349 }
350
351 XIL_INTERFACE_ERROR_CODE xilTerminate(uint32_T xilFcnId) {
352 /* Single In-the-Loop Component */
353 if (xilFcnId != 0) {
354 return XIL_INTERFACE_UNKNOWN_FCNID;
355 }
356 /* No Terminate Function to Call */
357
358 return XIL_INTERFACE_SUCCESS;
359 }
360
361 XIL_INTERFACE_ERROR_CODE xilEnable(uint32_T xilFcnId, uint32_T xilTID) {
362 /* Single In-the-Loop Component */
363 if (xilFcnId != 0) {
364 return XIL_INTERFACE_UNKNOWN_FCNID;
365 }
366 UNUSED_PARAMETER(xilTID);
367 /* No Enable Function - this function should never be called */
368 return XIL_INTERFACE_UNKNOWN_TID;
369 }
370
371 XIL_INTERFACE_ERROR_CODE xilDisable(uint32_T xilFcnId, uint32_T xilTID) {
372 /* Single In-the-Loop Component */
373 if (xilFcnId != 0) {
374 return XIL_INTERFACE_UNKNOWN_FCNID;
375 }
376 UNUSED_PARAMETER(xilTID);
377 /* No Disable Function - this function should never be called */
378 return XIL_INTERFACE_UNKNOWN_TID;
379 }
380
381
|